home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1995 June / MacFormat 25.iso / Shareware City / Developers / DSKA 1.4 Folder / dska.doc < prev    next >
Text File  |  1995-02-27  |  9KB  |  216 lines

  1. DSKA - a Macintosh based TMS3202x assembler
  2.  
  3. User Interface by Eric Brombaugh (ericb@sicom.com)
  4. version 1.4   2-27-95
  5. Assembler by Lloyd Miller ( lloyd@lfmcal.cuc.ab.ca)
  6. version 0.17
  7.  
  8. INTRO
  9. This program is a simple assembler for the Texas Instruments TMS3202x family
  10. of Digital Signal Processors.  It is intended for use with the program dskL by
  11. Gerrit Polder, which can be used to download the assembled code to the TI DSK
  12. development system.
  13.  
  14. USAGE
  15. The user interface is extremely simple.  To assemble a source file,  select your
  16. text file in the File->Open menu, or Drop-Launch/Drop-Load the file with the Finder.  Then select File->Assemble.  A console I/O window will open indicating the progress of the assembly.  If there are errors, they will be listed in this window.  Successful assembly will be noted here as well.  If you have corrected errors, you may re-assemble the source text by choosing File->Assemble again, without first going to the File->Open menu.
  17.  
  18. The File->Preferences item allows you to customize the .xxx extension of your
  19. resulting binary output file and listing file.  The defaults are .dsk for the binary
  20. file, and .lst for the listing file.  You may also change the size (row, column) of
  21. the console I/O window.  Note that the contents of the console I/O window will
  22. be lost if you click OK in the preferences dialog.
  23.  
  24. New in version 1.4, the File->Preferences menu item also allows you to select
  25. the method of encoding the LDPK instruction.  There is a disagreement between
  26. the TMS320C2x data book and the TI PC version of DSKA about how to encode 
  27. LDPK.  The data book indicates that the argument for LDPK is a page reference
  28. which is placed directly into the lower 9 bits of the instruction.  The PC version
  29. of DSKA which is provided by TI takes the argument of LDPK as an address which
  30. is right-shifted to obtain a page reference.  I allow you to choose what sort of
  31. compatibility you wish by means of a checkbox.
  32.  
  33. The file type of both of the output files is 'TEXT', so they may be viewed with
  34. TeachText or SimpleText.  The creator of the binary file has been set to dskL,
  35. which will allow you to load the binary file into Gerrit Polder's dskL application
  36. simply by double-clicking on the file in the Finder.
  37.  
  38. FILES
  39. The following files should be included with this archive:
  40.  
  41. 1)    DSKA                                The assembler application.
  42. 2)  dska.doc                        This documentation file.
  43. 3)  hostspec.asm        A spectrum analyzer which plots on the host computer.
  44. 4)  mmregs.inc            An include file which defines symbols for the TMS320c26 registers.
  45. 5)  dsk_twid.inc        An include file which defines sine/cosines for an fft.
  46. 6)  TESTF.ASM                An assembler test file.
  47.  
  48. HISTORY
  49. Rev 1.4    2/26/95
  50. Added AppleEvents to allow Drop-Launch/Drop-Load.
  51. Added LDPK encoding selection.
  52. Fixed BANZ bug detected by Gerrit Polder.
  53.  
  54. Rev 1.3  12/23/94
  55. Added LDPK Bug fix discovered/fixed by Ron Parsons
  56.  
  57. Rev 1.2  10/15/94
  58. Updated assembler code to version 0.17. 
  59.  
  60. Rev 1.1  10/10/94
  61. Updated assembler code to version 0.16.  Added GetNextEvent during
  62. assembly to allow multitasking.
  63.  
  64. Rev 1.0  
  65. Initial release.
  66.  
  67. NOTES
  68. There are a few things about this program which could be better, command keys
  69. would be nice for instance but were left out because they conflict with the Think C
  70. console interface.  A nice help system would be good, but doesn't really add to
  71. the functionality.
  72.  
  73. If you have any bug-reports or problems with this application, please let me know.
  74. Don't bother Lloyd, as he cannot support the Macintosh version.
  75.  
  76. THANKS
  77. Thanks go to Lloyd Miller of course, for his clearly written assembler code.  This
  78. program would simply not exist without his original work.  Gerrit Polder helped
  79. immensely in the beta-test of this code, as well as providing motivation for
  80. doing it in the first place.  Ron Parsons of TAPR helped debug some assembler
  81. errors after the initial release.
  82.  
  83. LEGAL
  84. This program is freeware.  Use it, but don't sell it.
  85.  
  86. Enjoy!
  87.  
  88. Eric Brombaugh
  89. ericb@sicom.com
  90. emeb@indirect.com
  91. Sept. 26, 1994
  92.  
  93. ADDITIONAL INFO
  94. The following are docs from Lloyd Miller pertaining to his dska.c assembler.  Since
  95. the Macintosh version of dska is based on his code, I have included it here.
  96. --------------------------------------------------------------------------
  97. Some random notes regarding the dska.c dsp starters kit assembler
  98. unofficial replacement I have created. This kinda assumes you have a TI
  99. DSP Starters' kit and you have tried to use their assembler.
  100.  
  101. Features this assembler has that the standard dska.exe that comes free
  102. with the DSK did not have:
  103.  
  104.  simple arithmetic expressions (+-*/ and ()s)
  105.  nested include files
  106.  nested .if/.else/.endif
  107.  free source code
  108.  Linux compatibility (actually general portability but I haven't tested
  109. it that much to make that claim)
  110.  second pass listing showing actual generated code offsets
  111.  
  112. Features this assembler lacks that the standard dska.exe had:
  113.  
  114. The command line option to define symbols.
  115.  
  116.  
  117.  
  118. To use this assembler, you will probably need to compile it yourself
  119. since I only give out source code. You have to link with the math
  120. library probably (-lm).
  121.  
  122. I compile it regularly on Linux with GCC and occasionally on MS-DOS
  123. with Borland's Turbo-C 2.0.
  124.  
  125. To run the assembler the command line is:
  126.  
  127.   dska source.asm binout.dsk listout.lst
  128.  
  129. The arguments are file names.
  130.   source.asm is your input file.
  131.   binout.dsk is the output binary in .dsk format just like the TI
  132. assembler
  133.   listout.lst is the output listing file much like the TI assembler but
  134. I think it is better
  135.  
  136. If you do not want one of the output files then use /dev/null (or NUL:
  137. on MS-DOS).
  138.  
  139. The .dsk binary file format is pretty stupid but we have to use it to be
  140. able to cooperate with the debugger and stuff.
  141.  
  142.  
  143. You should be able to use an expression combining numbers and symbols
  144. anywhere that you could use a number or a symbol before. The obvious
  145. exception is the dumb expressions as labels that TI tries to call a
  146. feature in their assembler. You can only have plain symbol names in the
  147. label positions of lines.
  148.  
  149. The colons (":") on labels are optional. Labels and only labels start
  150. in column one. Comments can also start in column one. Either a ";" or a
  151. "*" in column one makes the whole line into a comment. "*" not in
  152. column one will generally just be an error if it doen't make sense as a
  153. multiplication. Anything else must be preceded by a space or a tab.
  154. Labels must be separated from the operation field by a space or a tab.
  155.  
  156. The nasty restrictions they claim for the conditional assembly
  157. expression is of course totally relaxed.
  158.  
  159. I think you could use an external macro processor such as m4 but it
  160. would mean the line numbers wouldn't mean much any more. Perhaps someday
  161. the assembler could recognize embeded #line operations.
  162.  
  163. One place you cannot (yet) use expressions is the floating point values
  164. for the .qxx, .lqxx, .float, .double, .bfloat, and .efloat directives.
  165.  
  166. Ordinary labels cannot be redefined but labels on .set directives can be
  167. redefined at will.
  168.  
  169. Forward references are generally OK in the instruction operands and
  170. data lists but if you try hard enough you can get things confused
  171. between the values found for pass 1 and pass 2. The assembler might
  172. missleadingly claim you are trying to redefine labels in pass 2.
  173.  
  174. The listings show only the first two words of generated object code for
  175. each line. Do not be concerned if you want more than two words of data
  176. generated for a .word, .byte, .string, or one of the floating point
  177. formats that generates more than two words. The .dsk file will be fine
  178. even though the listing only shows the first two words. You can see the
  179. data in the .dsk file itself or you can examine the memory with the
  180. debugger. Perhaps I will fix this someday if I can figure out a nice
  181. way to do it.
  182.  
  183. A lot of the error messages are repeated the same on both passes.
  184.  
  185. Error messages in the listing file will generally PRECEDE the line they
  186. refer to.
  187.  
  188. "$ .set nnnn" is allowed but doesn't accomplish anything. The symbol
  189. "$" is reset to the current assmbly address for every line of the
  190. assembly. Using "$" as a label will produce lots of wierd error
  191. messages.
  192.  
  193. I make no effort to pass judgment on the severity of conditions
  194. detected. Error messages are not classified into warnings and fatals.
  195.  
  196. Lines skipped with .if can produce error messages while trying to
  197. decode opcode fields looking for .endif. .else or nested .ifs. This
  198. just means you should only use conditional assembly for actual code. To
  199. skip over comment blocks or other lines which should never be assembled
  200. use regular comment lines, not conditional assembly.
  201.  
  202. If you look at the structure of the assembler itself, you will find it
  203. is pretty straight forward. Pass_1 and pass_2 contain mainly a giant
  204. switch statement each based on the statement we are working on. There
  205. is lots of code duplicated which might better have been in common
  206. functions. This design resulted from seat-of-the-pants design while
  207. coding and edit mark block and copy, not from any deep conviction that
  208. it is right. The look up of the operation and the symbols are ultra
  209. simple linear searching. Hashing or sorting seemed like more trouble
  210. than they were worth. Tables have hard (but I think generous) limits
  211. that require editing the source and recompiling to change.
  212.  
  213. Lloyd Miller
  214. lloyd@lfmcal.cuc.ab.ca
  215. 1994 May 23 .. June 21
  216.